#include "product_manage.h" //

void sw_input_new(elem_type *Pi, void *data, size_t n)
{

    switch (n)
    {
    case 0:
        memcpy(Pi->_PRODUCT.ID, data, sizeof(Pi->_PRODUCT.ID));
        break;
    case 1:
        memcpy(Pi->_PRODUCT.name, data, sizeof(Pi->_PRODUCT.name));
        break;
    case 2:
        Pi->_PRODUCT.cap = *(int *)data;
        break;
    case 3:
        Pi->_PRODUCT.size = *(int *)data;
        break;

    default:
        break;
    }
}

void product_Vector_Add(vector v)
{
    elem_type *Pi = (elem_type *)calloc(1, sizeof(elem_type));
    void *temp = (void *)calloc(1, sizeof(elem_type));

    char YN_save, c;

    int num = 0, j = 0;
    long int ID = 0;

    ID = atoi(((struct _matrl_inf *)&(v->buff[v->size - 1]))->ID);
    sprintf(Pi->_USER.ID, "%ld", ++ID);
    printf("-----------添加新物资----------\n");
    // printf("注册新用户,预设ID为%s\n", Pi->_USER.ID);

    // system("clear");
    while (j < PRODUCT_PROJECT_NUM)
    {

        printf("请输入%s", product_gfind_v[j]);
        printf("\n:>");

        scanf(product_gscanf_matrl[j], temp); // 获取数据

        while ('\n' != *(char *)temp && '\n' != (c = getchar()))
            ;

        sw_input_new(Pi, temp, j);
        j++;
    }

    // MD5加密

    printf("是否保存？(Y/N):");

    YN_save = getchar();
    while ('\n' != YN_save && '\n' != (c = getchar())) // 一个回车也会进入下一循环
        ;

    if (YN_save == 'Y' || YN_save == 'y')
    {

        vector_push_back(v, *Pi); // 数据尾插

        printf("正在更新数据\n");
        product_Update_data(v);
    }
    else
    {
        printf("no save\n");
    }

    // sleep(1);
}

// void Vector_Add(vector v)
// {
//     data_type *Pi = (data_type *)malloc(sizeof(data_type));

//     data_type *temp = NULL;

//     char YN_continue, c;
//     int num = 0;

//     int j = 0;
//     // system("clear");
//     while (1)
//     {

//         printf("\n----------------输入要入库的");
//         printf(gscanf_matrl[0], gfind_v[0]);
//         printf("(输入Q退出)------------------\n");

//         printf("\n:>");
//         scanf(gscanf_matrl[0], Pi->ID);

//         if ('Q' == Pi->ID[0] || 'q' == Pi->ID[0])
//             break;

//         YN_continue = getchar();

//         while ('\n' != YN_continue && '\n' != (c = getchar())) // 一个回车也会进入下一循环
//             ;

//         if (NULL != (temp = find_data(v, Pi->ID, find_dast_ID, 1)))
//         {

//             // printf(" 是 %s", Pi.ID, temp->name);

//             printf(gscanf_matrl[0], gfind_v[0]);
//             printf("：");
//             printf(gscanf_matrl[0], Pi->ID);
//             printf("在仓库中，信息如下\n\n");

//             show_inf(temp);

//             printf("\n\n是否继续(Y/N)(退出请输入Q)？"); // 是原有货物，只修改其进货量
//             YN_continue = getchar();

//             while ('\n' != YN_continue && '\n' != (c = getchar())) // 一个回车也会进入下一循环
//                 ;

//             if ('Q' == YN_continue || 'q' == YN_continue)
//             {
//                 return;
//             }
//             if (YN_continue != 'Y' && 'y' != YN_continue)
//                 continue;

//             printf("\n输入此次货物进货量：");
//             scanf("%d", &num);
//             if (0 > num)
//             {
//                 printf("进货量输入为负！\n");
//                 continue;
//             }
//             temp->size += num; // 增加余量
//             temp->cap += num;  // 增加容量

//             continue;
//         }

//         printf("\n输入新货物名：");
//         scanf("%s", Pi->name);

//         printf("\n货物进货量：");
//         scanf("%d", &Pi->size);

//         Pi->cap = Pi->size;
//         vector_push_back(v, *Pi); // 顺序表尾插

//         printf("\n录入成功是否继续(Y/N)？");
//         YN_continue = getchar();

//         if (YN_continue == 'N' || YN_continue == 'n')
//             break;
//         // system("clear");
//     }
//     printf("正在更新数据\n");
//     Update_data(v);
//     // sleep(1);
// }
